package com.example.netty_pipline.pipeline;

/**
 * ChannelOutboundHandler接口 - 处理出站事件
 * 模仿Netty的ChannelOutboundHandler
 */
public interface ChannelOutboundHandler extends ChannelHandler {
    
    /**
     * 绑定操作
     */
    default void bind(ChannelHandlerContext ctx, Object localAddress) throws Exception {
        ctx.bind(localAddress);
    }
    
    /**
     * 连接操作
     */
    default void connect(ChannelHandlerContext ctx, Object remoteAddress, Object localAddress) throws Exception {
        ctx.connect(remoteAddress, localAddress);
    }
    
    /**
     * 断开连接操作
     */
    default void disconnect(ChannelHandlerContext ctx) throws Exception {
        ctx.disconnect();
    }
    
    /**
     * 关闭操作
     */
    default void close(ChannelHandlerContext ctx) throws Exception {
        ctx.close();
    }
    
    /**
     * 写入操作
     */
    default void write(ChannelHandlerContext ctx, Object msg) throws Exception {
        ctx.write(msg);
    }
    
    /**
     * 刷新操作
     */
    default void flush(ChannelHandlerContext ctx) throws Exception {
        ctx.flush();
    }
    
    /**
     * 读取操作
     */
    default void read(ChannelHandlerContext ctx) throws Exception {
        ctx.read();
    }
}